﻿using sipfe.Areas.File.Controllers;
using sipfe.Controllers.Base;
using sipfe.model.dataAccess;
using sipfe.service.nuevo;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace sipfe.Areas.Nuevo.Controllers
{
    public class NuevoController : BaseSipfeController
    {
      
        public ActionResult IndexCab(string clase)
        {
            string Titulo = "";
            string vista = "";
            string texto="";
            if (clase.Equals(Constante.CLASE_TRAMITE.BECA_IPFE))
            {
                Titulo  =   "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA IPFE";
                vista   =   "programa/BecaIpfeInp";
                texto   =   "BECA IPFE";

            }
            else if (clase.Equals(Constante.CLASE_TRAMITE.CREDITO_IPFE))
            {
                Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE CREDITO IPFE";
                vista = "programa/CreditoIpfeInp";
                texto = "CREDITO IPFE";
            }
            else if (clase.Equals(Constante.CLASE_TRAMITE.CREDITO_Y_BECA_IPFE))
            {
                Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE CREDITO Y BECA IPFE";
                vista = "programa/CreditoYBecaIpfeInp";
                texto = "CREDITO Y BECA IPFE";
            }
            else if (clase.Equals(Constante.CLASE_TRAMITE.BECA_PABE))
            {
                ViewBag.EmpresaPabe = formaSelectEmpresaPabe(Constante.getInstance().N_IDE_VINCULO_EMPRESA_PABE);
                Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA PABE";
                vista = "programa/BecaPabeInp";
                texto = "BECA PABE";
            }
            else if (clase.Equals(Constante.CLASE_TRAMITE.BECA_SOCIAL))
            {
                ViewBag.EmpresaEstrategica = formaSelectEmpresaPabe(Constante.getInstance().N_IDE_VINCULO_ALIADO_ESTRATEGICO);
                Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA SOCIAL";
                vista = "programa/BecaSocialInp";
                texto = "BECA SOCIAL";
            }
            //variables viewbag  CreditoInp           
            ViewBag.TITULO          =   Titulo;
            ViewBag.clase           =   clase;
            ViewBag.Clase_Tramite    =   new List<SelectListItem> {new SelectListItem { Text = texto, Value = clase}};

            //

            //string vista            =   "IndexCab";
           // string perfilUsuario    =   Session[Constante.N_IDE_PERFIL].ToString();
            llenaCatalogosNuevaBeca();
           // if (Constante.PERFIL_USUARIO.INVITADO_WEB.Equals(perfilUsuario)) vista = "IndexInvCab";
            return View(vista);
        }

        public ActionResult VerificaConvocatoriaExiste(int nideEmpresa, int nideNivel, int nideConcepto, int nModalidad)
        {
            SolicitudService sS = new SolicitudService();
            IList<dynamic> lista = sS.VerificaConvocatoriaExisteService(nideEmpresa, nideNivel, nideConcepto, nModalidad);
            int NumTotalRegistros = lista.Count();

            if (NumTotalRegistros > 0)
            {              
                return View("CargaDatosCostosSoliRO",lista);
            }
            return null;
        }

        public ActionResult ajaxEjm()
        {            
            return View();
        }




        /*FINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN*/

        public ActionResult IndexCab_old()
        {
            string Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA";
            ViewBag.TITULO = Titulo;
            string vista = "IndexCab";
            string perfilUsuario = Session[Constante.N_IDE_PERFIL].ToString();
            llenaCatalogosNuevaBeca();
            if (Constante.PERFIL_USUARIO.INVITADO_WEB.Equals(perfilUsuario)) vista = "IndexInvCab";
            return View(vista);
        }


        public ActionResult NuevaBecaInp()
        {
            string Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA";
            ViewBag.TITULO = Titulo;
            ViewBag.PaisEmisor = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
            ViewBag.ClaseTramite = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_CLASE_TRAMITE);
            ViewBag.Programas = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PROGRAMAS);
            ViewBag.NivelEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_NIVEL_ESTUDIO);
            ViewBag.ModalidadEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_MODALIDAD_ESTUDIO);
            ViewBag.VinculoFamiliar = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_VINCULO_FAMILIAR);
            
            
            return View();
        }

        public ActionResult BecaYCredito()
        {
            string Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA Y CREDITO";
            ViewBag.TITULO = Titulo;
            llenaCatalogosNuevaBeca();
            return View("BecaYCreditoInp");
        }

        public ActionResult Credito()
        {
            string Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA Y CREDITO";
            ViewBag.TITULO = Titulo;
            llenaCatalogosNuevaBeca();
            return View("CreditoInp");
        }


        //BecaPabe

        public ActionResult BecaPabe()
        {
            string Titulo = "REGISTRO DE INFORMACIÓN DE LA SOLICITUD DE BECA";
            ViewBag.TITULO = Titulo;
            ViewBag.PaisEmisor = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
            ViewBag.ClaseTramite = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_CLASE_TRAMITE);
            ViewBag.Programas = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PROGRAMAS);
            ViewBag.NivelEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_NIVEL_ESTUDIO);
            ViewBag.ModalidadEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_MODALIDAD_ESTUDIO);
            ViewBag.VinculoFamiliar = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_VINCULO_FAMILIAR);
            return View("BecaPabeInp");
        }      


        public ViewResult AddDatosPersona()
        {
            return View();
        }


        public ViewResult Nuevecito()
        {
            return View();
        }


        [HttpPost]
        public ActionResult AddNuevaSolcitud(SIPMaeSolicitud sipMaeSolicitud)
        {
            string clase = Request.Form["nIdeClaseSolicitud"];
            string vista = "";
            
            if (ModelState.IsValid)
            {
                string vinculos = Request.Form["sipDetVinculoPersona2.nIdePersona"];
                string tipoVinculos = Request.Form["nIdeTipoVinculo"];
                string nIdeConvocatoria = Request.Form["nIdeConvocatoria"];
                if (!string.IsNullOrEmpty(nIdeConvocatoria)) sipMaeSolicitud.nIdeConvo = Int32.Parse(nIdeConvocatoria);

                //sipMaeSolicitud.nIdeConvo = string.IsNullOrEmpty(nIdeConvocatoria);

                SolicitudService solicitudService = new SolicitudService();
                String[] rpta = solicitudService.AddNuevaSolicitudService(sipMaeSolicitud, vinculos, tipoVinculos);
                return RedirectToAction("NuevoRpta", new { nIdeSol = rpta[0]});
            }
            if (clase.Equals(Constante.CLASE_TRAMITE.BECA_PABE))
            {
                vista = "programa/BecaPabeInp";
            }



            return View(vista, sipMaeSolicitud);
        }


        [HttpPost]
        public ActionResult AddNuevoCaso(SIPMaeSolicitud sipMaeSolicitud)
        {
            if (ModelState.IsValid)
            {
                HttpFileCollectionBase uploads = Request.Files;
                var nIdeEmpresa = sipMaeSolicitud.nIdeEmpresa;
                
                int sizeFile = uploads.Count;
                if (sizeFile > 0)
                {
                    FileUploadController fileUploadController = new FileUploadController();
                    SIPDetArchivo sipDetArchivo = new SIPDetArchivo();
                    string idCampoFile = "idAdjunto";
                    string v_Comentario = "";
                    int n_IdeUsuReg = Int32.Parse(Session[Constante.N_IDE_USUARIO].ToString());
                    HttpPostedFileBase file = Request.Files[idCampoFile];
                    sipDetArchivo = fileUploadController.getSIPDetArchivo(file, idCampoFile, Constante.N_TIPO_ADJUNTO_PASO, v_Comentario, n_IdeUsuReg);

                    sipMaeSolicitud.SIPDetArchivo1 = sipDetArchivo;
                    
                    //sipDetSolicitud.SIPDetArchivo.Add(sipDetArchivo);
                   // sipMaeSolicitud.SIPDetSolicitud.ElementAt(0).SIPDetArchivo.Add(sipDetArchivo);
                }
                
                
                
                string n_IdeTipoDocumRef    =   Request.Form["nIdeTipoDocumRef"];
                string v_NumDocumRef        =   Request.Form["vNumDocumRef"];
                string sw                   =   Request.Form["sw"];
                string v_razonSocial          =   Request.Form["razonSocial"];
                
                if (string.IsNullOrEmpty(sw)) sw = "";

                SolicitudService solicitudService = new SolicitudService();
                String[] rpta = solicitudService.AddNuevoCasoService(sipMaeSolicitud, n_IdeTipoDocumRef, v_NumDocumRef);

                if(sw.Equals("1")){
                    return RedirectToAction("TabUpdateDatosEmpresa", "../Persona/ManteEmpresa", new { n_ideEmpresa = nIdeEmpresa, swReg = sw, razonSocial = v_razonSocial,rptaAccion=1 });
                }else{
                    return RedirectToAction("NuevoCasoRptaAccion", new { nIdeSol = rpta[0] });
                }
                //TabRegistraAccion(string swReg, int nIdeEmpresa, string razonSocial)
                //return RedirectToAction("ListaDireccionPersonaRO", "../Persona/MantePerson", new { nIdePersona = n_IdePersona });
                //Persona/ManteEmpresa/TabUpdateDatosEmpresa
                //public ViewResult TabUpdateDatosEmpresa(string swReg, int n_ideEmpresa, string razonSocial)
            }
            llenaCatalogosNuevo();
            return View("ManejoCasoCab", sipMaeSolicitud);
        }

        public ViewResult NuevoCasoRpta(decimal nIdeSol)
        {
            SolicitudService solicitudService = new SolicitudService();
            return View(solicitudService.sipMaeSolicitudByIdService(nIdeSol));
        }

        public ViewResult NuevoCasoRptaAccion_old(decimal nIdeSol)
        {
            SolicitudService solicitudService = new SolicitudService();
            return View(solicitudService.sipMaeSolicitudByIdService(nIdeSol));
        }



        public ViewResult NuevoRpta(decimal nIdeSol)
        {
            SolicitudService solicitudService = new SolicitudService();
            return View(solicitudService.sipMaeSolicitudByIdService(nIdeSol));
        }

        public ViewResult ManejoCasoCab()
        {           
            llenaCatalogosNuevo();
            return View();
        }

        public ViewResult ManejoCasoInvCab()
        {
            llenaCatalogosNuevo();
            return View();
        }

        public ViewResult BuscarInteresadoCab(int n_IdeCodPaisDoc, int n_IdeTipoDocum, string v_Nombres)
        {           
            SolicitudService solicitudService = new SolicitudService();

            if (n_IdeTipoDocum == Constante.N_RUC) //ruc
            {
                List<SIPMaeEmpresa> lista = new List<SIPMaeEmpresa>();
                lista = solicitudService.ListaEmpresaService(n_IdeCodPaisDoc, n_IdeTipoDocum, v_Nombres);
                return View(lista);
            }
            else{
                List<SIPMaePersona> lista = new List<SIPMaePersona>();
                lista = solicitudService.ListaPersonaService(n_IdeCodPaisDoc, n_IdeTipoDocum, v_Nombres);
                return View("ListadoPersona", lista);
            }
        }

        private void llenaCatalogosNuevo()
        {
            ViewBag.PaisEmisor = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
            ViewBag.Para = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PARA);
            ViewBag.Prioridad = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PRIORIDAD);
            ViewBag.DocAcompa = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_DOC_ACOMPA);
            ViewBag.TipoTramite = formaSelectCompendioLargo(Constante.getInstance().N_IDE_TABLA_TIPO_TRAMITE); 
        }

        private void llenaCatalogosNuevaBeca()
        {
            ViewBag.PaisEmisor = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
            //ViewBag.ClaseTramite = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_CLASE_TRAMITE);
            ViewBag.Programas = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PROGRAMAS);
            ViewBag.NivelEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_NIVEL_ESTUDIO);
            ViewBag.ModalidadEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_MODALIDAD_ESTUDIO);
            ViewBag.VinculoFamiliar = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_VINCULO_FAMILIAR);
            ViewBag.ParentescoFamiliar = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PARENTESCO_FAMILIAR);
        }

        //invitados
        public ViewResult EditarDatosInvitadosTab()
        {                      
            return View();
        }


        

        

    }
}
